package com.common.utils;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;

/**
 * shiro 工具
* @author 	zh
* @date 2018年3月2日
 */
public class ShiroUtil {

	/**
	 * 
	* 方法名:  getCurrentUser
	* 方法功能描述:    获取当前操作用户
	* @throws Exception
	* @return Object    
	* @Author:   zh
	* @Create Date:   2017年1月5日 上午11:19:06
	 */
	public static Object getCurrentUser(){
		try{
			Subject currentUser = SecurityUtils.getSubject();
			if (currentUser == null) {
				throw new Exception("当前用户为空");
			}
			Session session = currentUser.getSession();
			return session.getAttribute("user");
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 
	* 方法名:  getSessionMap
	* 方法功能描述:    将当前session中储存的值取到map中
	* @return Map<Object,Object>    
	* @Author:   zh
	* @Create Date:   2017年7月12日
	 */
	public static Map<Object, Object> getSessionMap(){
		Map<Object, Object> map = new HashMap<>();
		Session session = getSession();
		if (session == null) 
			return null;
		Collection<Object> keys = session.getAttributeKeys();
		for (Object key : keys) {
            final Object value = session.getAttribute(key);
            if (value != null)
            	map.put(key, value); 
        }
		return map;
	}
	
	/**
	 * 
	* 方法名:  getSession
	* 方法功能描述:    获取shiro session
	* @return
	* @return Session    
	* @Author:   zh
	* @Create Date:   2017年1月20日
	 */
	public static Session getSession(){
		Subject currentUser = SecurityUtils.getSubject();
		if(null != currentUser){ 
			return currentUser.getSession();
		}
		return null;
	}
}
